﻿/********************************************************************************
** @ Date:2025/05/12
** @ Author: Gaojia
** @ Description: 机器人设备数据基类
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef CDevDataBase_H
#define CDevDataBase_H
#include <qobject.h>
#include "CDevDataCam.h"
#include <QLabel>
#include <QDateTime>
#include "CHeader.h"
#include "CTaskExecInfo.h"
#include <QMutex>

#define ROLLERINTER 0.4
class CPointMgrBase;
enum ECameraMode
{
	enNormalMode,   //普通模式
	enExpertMode    //专家模式
};

//预置点区域相关参数
struct SPersetAreaParam
{
	WORD wPresetNo;        //预置点号
	BYTE byDistanceUnit;   //距离单位
	WORD wDistance;        //距离
};

//预置点点信息
struct SPresetPoint
{
	QPointF pointItem;   //坐标点坐标
	double dPercentX;   //x轴坐标百分比
	double dPercentY;   //y轴坐标百分比
};

//矩形预置点区域参数
struct SPersetAreaRect
{
	SPresetPoint pointA; //左上角坐标
	SPresetPoint pointB; //左上角坐标
	SPresetPoint pointC; //左上角坐标
	SPresetPoint pointD; //左上角坐标
	SPresetPoint centerPoint; //中心点坐标
	double dRectLength;  //矩形长度
	double dRectWidth;   //矩形宽度
};


/**
* @ Author: Gaojia
* @ Description: 传感器信息结构体
*/

struct SSensorInfo
{
	QString m_sGuid;            //传感器GUID
	QString m_sSnesorType;      //传感器类型
	QString m_sSensorName;      //传感器名称
	double  m_dLimitU;          //默认上限
	double  m_dLimitUU;         //默认上上限
	double  m_dLimitL;          //默认下限
	double  m_dLimitLL;         //默认下下限
	bool    m_bEnaled;          //传感器是否使能

	SSensorInfo()
	{
		m_sGuid = "";
		m_sSnesorType = 303001;
		m_sSensorName = "PM2.5";
		m_dLimitU = 80;
		m_dLimitUU = 100;
		m_dLimitL = 20;
		m_dLimitLL = 0;
		m_bEnaled = true;
	}
};

/**
* @ Author: Gaojia
* @ Description: 测点结构体
*/
struct SAddrData
{
	QString       m_sAddrData;          //测点地址
	int           m_nAddrLength;        //测点地址长度
	quint64       m_nTagVal;            //测点数值
	int           m_nOffset;			//测点补偿值
	SAddrData()
	{
		m_sAddrData = "";
		m_nAddrLength = 0;
		m_nOffset = 0;
		m_nTagVal = 0;
	}
};
/**
* @ Author: Gaojia
* @ Description: 光字牌报警结构体
*/
struct SAlarmFauit
{
	QString sCorreId;   //关联id
	double dVal;        //数值
	SAlarmFauit()
	{
		sCorreId = "";
		dVal = 0;
	}
};


/**
* @ Author: Gaojia
* @ Description: 巡检机器人读测点枚举
*/
enum ERAddrNameRob
{
	enRHeartSync = 1,                             //机器人心跳        
	enRDevStatus,                                 //设备状态
	enRDevWorkStatus,                             //设备工作状态
	enRCtrCmdExecStatus,                          //控制命令执行状态/结果
	enRRobBatteryInfo,                            //机器人电量信息
	enRBatteryVol,                                //电池电压
	enRBatteryCurr,                               //电池电流
	enRRobTempInfo,                               //电池温度信息
	enRRobCurrLoca,                               //机器人当前位置
	enRRobCurrSpeed,                              //机器人当前速度
	enRCtrCmdExecRe,                              //控制执行反馈
	enRRobCurrLocaZ,                              //机器人Z当前位置  
	enRRobCurrSpeedZ,                             //机器人Z当前速度
	enRTaskErr,                                   //机器人执行任务异常说明
	enRMotorCurr,                                 //电机电流 
	enRIsInFlushPlace,							  //是否到达冲洗位置
	enRMotorTorque = 20,                          //电机力矩
	enRMotorTemp,                                 //电机温度
	enRMotorErr,                                  //电机当前报警代码
	enRSwitchStateCheck,                          //检测开关状态
	enRLiftTorque,                                //升降机力矩
	enRLiftTemp,                                  //升降机温度
	enRLiftErr,                                   //升降机电机当前报警代码
	enRSensorHum,								  //传感器湿度
	enRSensorTemp,                                //传感器温度
	enRSensorPM25,                                //传感器PM2.5
	enRSensorPM10,                                //传感器PM10
	enRSensorGas,                                 //传感器可燃气体
	enRSensorCO,                                  //传感器一氧化碳
	enRRfidTagNum,                                //Rfid标签序号
	enRRfidTagVal,                                //Rfid标签值
	enRTotalDis,                                  //运行总里程
	enRTaskCmdExecRe,                             //任务命令执行反馈
	enRTaskCmdExecStatus,                         //任务命令执行状态
	enRTaskStatus,                                //机器人当前任务状态 1-开始执行任务  2-暂停执行任务 3-中止执行任务 4-恢复执行任务
	enRPolItemNum,                                //当前巡检项序号
	enRPolItemExecStatus,                         //当前巡检项执行状态 
	enRLightStatus,                               //三色灯状态
	enRSensorVoice,								  //传感器噪声
};

/**
* @ Author: Gaojia
* @ Description: 巡检机器人写测点枚举
*/
enum EWAddrNameRob
{
	enWCtrCmd = 1,                             //控制命令
	enWAlarmRes,                               //报警复位
	enWChargeStaSelect,                        //充电桩选择
	enWRobSpeedSet,                            //设置机器人速度
	enWMoveLocaVal,                            //机器人运动到指定点坐标
	enWRobSpeedSetZ,                           //设置机器人Z速度值
	enWMoveLocaValZ,                           //机器人运动到指定点Z坐标
	enWLowBatteryAutoChargeEn,                 //低电量自动充电是否开启
	enWPanObsSignal,                           //云台避障信号
	enWProSensorOffset,                        //接近传感器偏移量 
	enWTag2Offset,                             //2#标签偏移量
	enWMotorEn,                                //驱动电机使能
	enWSwitchClose,                            //合闸
	enWSwitchOpen,                             //分闸  
	enWRFIDRWToggle,                           //读写RFID切换
	enWStartWRFIDTagID,                        //写RFID标签序号启动
	enWMotorCurrLimit,                         //驱动电机电流上限
	enWMotorCurrDelay,                         //驱动电机电流延时
	enWMotorTorqueLimit,                       //驱动电机扭矩上限
	enWMotorTorqueDelay,                       //驱动电机扭矩延时
	enWMotorTempLimit,                         //驱动电机温度上限
	enWMotorTempDelay,                         //驱动电机温度延时
	enWFrontObsDis,                            //避障开关
	enWRealObsDis,                             //跨皮带保护开关
	enWRunModelFlag,                           //运行模式标注位
	enWTaskCmd,                                //任务命令
	enWMoveSpeed,                              //行走速度值
	enWMoveSpeedZ,                             //升降速度值    
	enWPolItemDataUpdate,                      //巡检项数据是否更新
	enWChargeLimitThre,                        //充电截止阈值
	enWChargeLimitVol,                         //充电截止电压
	enWStanChargeThre,                         //待机补电阈值
	enWStanChargeVol,                          //待机补电电压
	enWTaskExecPowerThre,                      //执行任务电量阈值
	enWTaskExecPowerVol,                       //执行任务电量电压
	enWForceChargeThre,                        //强制充电阈值
	enWForceChargeVol,                         //强制充电电压
	enWChargeFailCyc,                          //充电失败循环次数
	enWChargerCommDelay,                       //充电器通讯延时
	enWChargeAutoRetreatDis,                   //充电自动退回距离
	enWFirLevelReduc,                          //一级减速
	enWSecLevelReduc,                          //二级减速
	enWSensor2TagVal,                          //接近传感器\2#标签坐标
	enWLiftMotorCurrLimit,                     //升降电机电流上限
	enWLiftMotorCurrDelay,                     //升降电机电流延时
	enWLiftMotorTorqueLimit,                   //升降电机扭矩上限
	enWLiftMotoTorqueDelay,                    //升降电机扭矩延时
	enWLiftMotoTemp,                           //升降电机温度
	enWLiftMotoTempDelay,                      //升降电机温度延时
	enWTagWModeOnOff,                          //标签写入模式--开/关
	enWTagWModeReset,                          //标签写入模式--标签复位
	enWTagWModeMotorZero,                      //标签写入模式--电机清零
	enWTagWModeAccep,                          //标签写入模式--手动确认
	enWTagWModeAutoEn,                         //标签写入模式--自动模式开关
	enWLiftSpeed,                              //升降机速度
	enWAutoSwitchOpenBatteryThre,			   //自动分闸电量阈值(%)
	enWAutoSwitchOpenVolThre,				   //自动分闸电压阈值(V)
	enWIsAutoFlush,							   //巡检结束是否自动冲洗
	enWFlushRFID1,							   //冲洗位置前RFID号
	enWFlushRFID2,							   //冲洗位置后RDIF号
	enWChargeYTPreset,						   //充电云台预置点
	enWFlushPlaceOffset,					   //冲洗位置补偿值(mm)
	enWIsFlushing,							   //是否冲洗中
	enWMoveToFlush,							   //一键冲洗
	enWAlarmStop,							   //持续监测发生报警停留标志位
	enWAlarmStopTime,						   //持续监测发生报警停留时间(s)
	enWConTaskIndex,                           //持续任务起点
	enWCollectTime,							   //云台巡检项采集时间
	enWDirectionSelect,						   //方向选择 正/反 0/1
	enWParameterDistribut,					   //参数下发 不下发/下发 0/1
	enWSave,						           //保存 不保存/保存 0/1
	enWPolItemCount = 100,                     //巡检项总数
	enWPolItemData,                            //巡检项数据开始地址
};

enum ECCmdType
{
	/**
	* @ Author: Gaojia
	* @ Description: 既是控制命令状态反馈的枚举 又是 CtrDevice switch判断的枚举
	*/
	enCNoCmd,           //无命令
	enCMoveForward,     //前进
	enCMoveBackward,    //后退
	enCSetSpeed,        //调速
	enCSuddenStop,      //急停
	enCStartCharging,   //一键充电
	enCStopCharge,      //手动停止充电
	enCMoveToPosition,  //运动到指定点
	enCinitRob,         //位置初始化(一键回零)
	enCMoveUp,          //上升
	enCMoveDown,        //下降  
	enCSetSpeedZ,       //Z调速
	enCMoveToPositionZ, //Z运动到指定点
	enCinitRobZ,        //Z位置初始化(一键回零)
	enCForceCharge,     //手动强制充电
	enCManuForceUp,     //手动强制上升Z
	enCManuForceDown,   //手动强制下降Z
	enCSuddenStopReset, //急停恢复
	enCStartPan = 101,	//开始盘库
	enCEndPan = 102,		//结束盘库
	/**
	* @ Author: Gaojia
	* @ Description:    下面的枚举 不是控制命令状态反馈的枚举  是 CtrDevice函数的 switch判断的枚举
	*/
	enCResetAlarmEn,     //报警复位开启
	enCResetAlarmOff,    //报警复位关闭
	enCColseBrakeEn,	 //合闸写1
	enCColseBrakeOff,	 //合闸写0
	enCReleseBrakeEn,	 //分闸写1
	enCReleseBrakeOff,	 //分闸写0
	enCLabelModeEn,		 //标签模式写1
	enCLabelModeOff,	 //标签模式写0
	enCLabelResetEn,	 //标签复位写1
	enCLabelResetOff,	 //标签复位写0
	enCMotorZeroClearEn, //电机清零写1
	enCMotorZeroClearOff,//电机清零写0
	enCManualConfirmEn,	 //手动确认写1
	enCManualConfirmOff, //手动确认写0
	enCAutoConfirmEn,	 //自动确认写1
	enCAutoConfirmOff,	 //自动确认写0
	enCWitchModeManual,  //手动遥控模式
	enCWitchModeAuto,    //自动任务模式
	enCReadPlcCfg,       //读plc参数
	enCWritePlcCfg,      //写plc参数
	enCGoToFlushEn,		 //一键冲洗写1
	enCGoToFlushOff,	 //一键冲洗写0
	enCResetWorkState,	 //复位机器人工作状态
	enCAlarmRemain,	     //报警停留
	enCDirectionCorrect, //方向选择正
	enCDirectionReverse, //方向选择反
	enCParameterDistribut, //参数下发
	enCDisParameterDistribut, //参数不下发
	enCSave,               //保存
	enCDisSave,            //不保存
	enExecItem = 301,      //执行巡检项     相机或者云台巡检项
	enCExecTask = 601,     //开始执行任务
	enCSuspendTask,        //暂停执行任务
	enCAbortTask,          //中止执行任务
	enCRestartTask,        //恢复执行任务

};
/**
* @ Author: Gaojia
* @ Description: 云台控制信息枚举
*/
enum ECCamerCmdType
{
	enCNoCmdCamer,    //无命令
	enCRealPlay,      //开启预览
	enCStopRealPlay,  //停止预览
	enCCapture,       //拍照
	enCRecord,        //录像
	enCStopRecord,    //停止录像
	enCVoiceTalk,     //录音(实际是对讲打开) 
	enCStopVoiceTalk, //停止录音(实际是对讲关闭)
	enCExecItemCamer, //执行巡检项
	enCSetPointCamer, //设置预置点
	enCLightPwoer,    //开灯
	enCStopLightPwoer,//关灯
	enCWiperPwoer,    //开雨刷
	enCWiperLightPwoer,//关雨刷
	enCTiltUp,         //云台上   
	enCTiltDown,       //云台下
	enCPanLeft,        //云台左右
	enCPanRight,       //云台左右
	enCTiltUpStop,     //云台上 停止 
	enCTiltDownStop,   //云台下 停止
	enCPanLeftStop,    //云台左右 停止
	enCPanRightStop,   //云台左右 停止
	enZoomAdd,         //调焦+
	enZoomAddStop,	   //调焦+ 停止
	enZoomSubtract,	   //调焦-
	enZoomSubtractStop,//调焦- 停止
	enSetMode,         //云台设置模式
	enSetPresetArea,    //云台设置预置点区域
	enRunToPrestNo,     //云台转到预置点
	enStartVoiceForward,//开始语音转发
	enEndVoiceForward,  //关闭语音转发
	enBroadcastAudio,	//播报音频文件
	enCLogin,			//登录命令
};
/**
* @ Author: Gaojia
* @ Description: 控制命令执行返回信息枚举
*/

enum ECtrCmdExecReInfo
{
	enSuccess,           //执行成功
	enSetCmdFail,        //设置命令失败
	enResetCtrCmdFail,   //复位执行命令失败
	enResetCtrCmdReFail, //复位执行命令反馈失败
	enResetResultFail,   //复位执行结果失败
	enWriteParamFail,    //写参数失败
	enReadFail,          //读取数据失败
	enPlcNoFeedBack,     //PLC无反馈
	enInterruptCmd,      //控制命令被打断
	enCtrCmeExecOn,      //控制命令执行未完成
	enCtrCmeExecFail,    //控制命令执行失败
	enExecTimeout,       //执行超时 
	enOther,             //其他
};


struct SDevExecLog
{
	QDateTime      m_dLogTime;          //时间
	QString        m_sDevName;
	bool           m_bExecResult;       //操作执行结果  false 失败  true成功
	QString        m_sDescriptionl;     //操作描述
	int            m_nAlarmLevel;       //报警等级
	SDevExecLog()
	{
		m_dLogTime = QDateTime::currentDateTime();
		m_sDevName = A2T("设备");
		m_bExecResult = true;
		m_sDescriptionl = "/";
		m_nAlarmLevel = 1;
	}
};

struct SRollerNo
{
	int m_nRollerNoA;
	int m_nRollerNoB;
	QString m_sRollerDescA;
	QString m_sRollerDescB;
	SRollerNo()
	{
		m_nRollerNoA = -1;
		m_nRollerNoB = -1;
		m_sRollerDescA = "";
		m_sRollerDescB = "";
	}
};

/**
* @ Author: Gaojia
* @ Description: 设备控制命令结构体
*/
struct SCtrInfo
{
	QString m_sGuid;    //对象GUID
	QString m_sCtrId;   //控制编号GUID
	bool m_bHasCtr;     //是否需要获取控制权限
	int  m_nUserType;   //用户类型 见 EUserType
	bool m_bCtrSync;    //同步控制/异步控制
	int m_nCtrDevType;  //对应机器人控制子设备类型 对应 EDevType 枚举 PLC还是云台  对应盘库机器人  0设备本体和3DSCAN    
	int m_nSubCtrDevType;//云台控制设备类型  对应 EDevTypCode 枚举
	int m_nCtrCmd;      //控制命令类型
	int m_nCamerAngle;  //相机预置点
	QString m_sReData;  //控制返回的信息
	HWND m_hHwnd;       //视频预览句柄
	QLabel *m_pLabel;
	QString m_sImgUrl;  //图片地址
	QString m_sVideoUrl;//录像地址
	/**
	* @ Author: Gaojia
	* @ Description: 机器人设备参数
	*/
	int m_nSpeed;       //速度值
	int m_nLocaVal;     //位置
	int m_nWriteAddr;	//写入地址
	int m_nAddrLen;		//写入地址的长度
	int m_nValue;		//写入Plc的值
	bool m_bIsLog;		//是否需要记录日志,默认需要
	/**
	* @ Author: Gaojia
	* @ Description:  巡检项相关数组
	*/
	SCPolItemCom *m_pPolItemCom;
	QVector<int>m_vecIndex;
	QVector<int> m_vecArray;
	///**
	//* @ Author: AoZhiQiang
	//* @ Description:  专家模式相关参数
	//*/
	ECameraMode m_enModeType;               //相机模式类型
	SPersetAreaRect m_stPersetAreaRect;     //预置点矩形区域数据
	SPersetAreaParam m_stPersetAreaParam;   //预置点区域参数
	//SCtrSensorSeriesInfo* m_pCtrSensorSeriesInfo;//控制声振温算法仓命名参数
	SCtrInfo()
	{
		m_sCtrId = "";
		m_sGuid = "";
		m_bHasCtr = true;
		m_nUserType = 0;
		m_bCtrSync = false;
		m_nCtrDevType = 0;
		m_nSubCtrDevType = 0;
		m_nCtrCmd = 0;
		m_sReData = "";
		m_hHwnd = NULL;
		m_pLabel = NULL;
		m_sImgUrl = "";
		m_sVideoUrl = "";
		m_nSpeed = 1;
		m_nLocaVal = 0;
	/*	m_vecIndex.clear();
		m_vecArray.clear();
		m_pPolItemCom = nullptr;
		m_bIsLog = true;
		m_pCtrSensorSeriesInfo = nullptr;*/
	}
	~SCtrInfo()
	{
	}
};

struct SCtrReData
{
	int nCtrType;
	int nSubCtrDevType;
	int nCtrDevType;
	int nResult;
	QString sCtrId;   //控制编号GUID
	QString sReDesc;

	SCtrReData()
	{
		sCtrId = "";
		nCtrType = 0;
		nSubCtrDevType = 0;
		nCtrDevType = 0;
		nResult = 0;
		sReDesc = "";
	}
};

struct SRollerInfo
{
	double dLoaction;  //位置
	int nRollerNum;   //托辊号
	QString sRollerDesc;
	SRollerInfo()
	{
		dLoaction = -1;
		nRollerNum = -1;
		sRollerDesc = "";
	}
};
class CDevDataBase :
	public QObject
{
	Q_OBJECT
public:
	CDevDataBase();
	~CDevDataBase();
	bool lock(int nMs = 100000000);              //拿数据锁
	void unLock();                               //是否数据锁
	bool getDevCtr(QString sGuid);               //获取控制权限
	bool releaseDevCtr(QString sGuid);           //释放控制权限
	void addDevExecLog(SDevExecLog sSDevExecLog);
	QMutex *m_pMutex;
	QString m_sId;    //上层管理的id
	CPointMgrBase* m_pPointMgrBase;
	/**
	* @ Author: Gaojia
	* @ Description:  数据处理函数
	*/
	QString getCtrCmdExecReInfo(int nType);
	QString getCurrRollerName();        //获取当前托辊名称
	int getCurrRollerNo(QString& sRollerDesc);//获取托辊号
	int getRollerNoEx(double dPos, QString &sRollerDesc, int nBelong = 0);//获取托辊号,dPos：米数  nBelong:归属哪一侧  0:A侧 1:B侧
	int getRollerNo(double dPos, QString &sRollerDesc, int nBelong = 0);//获取托辊号,dPos：米数  nBelong:归属哪一侧  0:A侧 1:B侧
	double findNearestKey(double dValue);//获取距离最近的key值
	int findRoller(double &dValue, int nBelong = 0);  //巡检最近的托辊号
	/**
	* @ Author: Gaojia
	* @ Description:
	*/
	QMutex m_MutexRollerCfg;//托辊配置锁
	int m_nRollerNum;//当前托辊号(计算后刷新)
	int m_nCamerRollerNum;//当前托辊号(视频镜头对应的托辊号)
	int m_nBelogn;   //AB侧托辊
	QString m_sRollerDesc; //当前托辊号名称描述
	QString m_sCamerRollerDesc; //当前托辊号名称描述(视频镜头对应的托辊号)
	QMap<double, SRollerNo> m_mapRollerConfig;//托辊配置(根据csv配置组装出来)   double机器人所处距离(米) int托辊号
	/**
	* @ Author: Gaojia
	* @ Description: 机器人配置信息
	*/
	bool m_bTaskExec;           //机器人是否是正在执行任务  调用终止任务就变为 false  调用开始任务就变为true
	bool m_bBeltAWork;          //A侧皮带运行状态    
	bool m_bBeltBWork;          //B侧皮带运行状态
	QString     m_sRobotIp;                 //机器人主机Ip
	QString     m_sRobotPort;			    //机器人端口号
	QString     m_sDevGuid;                 //设备GUID
	QMap<int, SAddrData> m_mapAddrDataR;        //读 测点序号 测点地址结构体
	QMap<int, SAddrData> m_mapAddrDataW;        //写 测点序号 测点地址结构体
	QMap<int, SAlarmFauit>m_mapAlarmFauit;      //故障报警数组  int 报警状态bit位置
	QString     m_sRobName;			            //机器人主机名称
	double m_dRobRunSpeed;                      //机器人主机运行速度(默认行走速度)
	double m_dRobRunSpeedZ;                     //机器人主机运行速度Z
	int m_nDeviceEnum;                          //设备类型，设备类型 1001主机  2001 A型号相机  3001 温度传感器  3002 气体传感器
	int m_nRobType;                             //机器人类型  1-A型号 2-B型号  101科右中版本
	double m_dSafeDistance;                     //Z轴安全位置
	int m_nRobWorkType;                         //机器人工作模式  0 手动模式 1 自动任务模式
	double m_dCorse;                            //机器人运行总里程数
	int m_nProximitySensorOffset;               //接近传感器偏移量
	int m_nNo2LabelOffset;                      //#2标签偏移量
	int m_nIsOpenAutoCharge;                    //是否开启低电量自动充电
	int m_nAutoChargeThreshold;                 //低电量自动充电阈值
	double m_dReturnSpeed;                      //返程速度
	double m_dFrontObstacleAvoidance;           //前避障距离
	double m_dBackObstanceAvidance;             //后避障距离
	double m_dChargeCutOffThreshold;            //充电截止阈值
	double m_dChargeCutOffVolTage;              //充电截止电压
	double m_dHoldingAddPowerThreshold;         //待机补电阈值
	double m_dHoldingAddPowerVoltage;           //待机补电电压
	double m_dTaskEleQuantityThreshold;         //执行任务电量阈值
	double m_dTaskEleQuantityVoltage;           //执行任务电量电压
	double m_dForceChargeThreshold;             //强制充电阈值
	double m_dForceChargeVoltage;               //强制充电电压
	double m_dChargeFallLoopCount;              //充电失败循环次数
	double m_dChargeCommunicationDelay;         //充电通讯延时
	double m_dChargeAutoRetornDistance;         //充电自动退回距离
	double m_dLevelOneSpeedCut;                 //一级减速
	double m_dLevelTwoSpeedCut;                 //二级减速
	double m_dDriveMotorUpperCurrent;           //驱动电机电流上限
	double m_dDriveMotorCurrentSleep;           //驱动电机电流延时
	double m_dDriveMotorUpperTorque;            //驱动电机扭矩上限
	double m_dDriveMotorTorqueSleep;            //驱动电机扭矩延时
	double m_dDriveMotorUpperTemp;              //驱动电机温度上限
	double m_dDriveMotorTempSleep;              //驱动电机温度延时
	double m_dLiftMotorUpperCurrent;            //升降电机电流上限
	double m_dLiftMotorCurrentSleep;            //升降电机电流延时
	double m_dLiftMotorUpperTorque;             //升降电机扭矩上限
	double m_dLiftMotorTorqueSleep;             //升降电机扭矩延时
	double m_dLiftMotorUpperTemp;               //升降电机温度上限
	double m_dLiftMotorTempSleep;               //升降电机温度延时
	double m_dLiftMotorSleepSet;                //升降电机速度值设定
	double m_dOneClickBaceLocation;             //一键返航位置(mm)
	double m_dAutoSwitchOpenBatteryThre;		//自动分闸电量阈值(%)
	double m_dAutoSwitchOpenVolThre;			//自动分闸电压阈值(V)
	double m_dIsAutoFlush;						//巡检结束是否冲洗
	int    m_nFlushRFID1;						//冲洗位置前RFID号
	int    m_nFlushRFID2;                       //冲洗位置后RFID号
	double m_dFlushPlaceOffset;				    //冲洗位置补偿
	int    m_nAlarmStopTime;					//持续监测发生报警停留时间(s)
	int    m_nChargeYTPreset;					//云台充电预置点
	QString     m_sRobObstacleCfg;          //机器人本体避障配置
	QMap<double, int> m_mapRobObstacle;			//本体避障配置
	int    m_nIsHaveFlush;						//是否有冲洗设备0否  1是 
	int    m_nFlushBlong;						//冲洗设备归属 0:冲洗PLC与机器人PLC分开 1:冲洗PLC与机器人PLC合并
	int    m_nCollectTime;						//云台巡检项采集时间(s)
	int    m_nVoiceAverigeTime;					//取噪声平均值时间间隔(s)
	int    m_nVoiceOffset;						//声音传感器偏移值(db)
	int    m_nTempOffset;						//温度传感器偏移值
	int    m_nHumOffset;						//湿度传感器偏移值
	int    m_nGasOffset;						//可燃气体传感器偏移值
	int    m_nPM25Offset;						//PM2.5传感器偏移值
	int    m_nPM10Offset;						//PM10传感器偏移值
	int    m_nCoOffset;							//Co传感器偏移值
	int    m_nHumEnable;						//湿度传感器是否生效

	QVector<SSensorInfo> m_vecSensor;
	/**
	* @ Author: Gaojia
	* @ Description: 机器人实时数据
	*/
	double    m_dDetecOffset;			//托辊号检测偏移距离  单位m
	int m_nRobRunMode; //机器人工作模式   0 遥控模式   1 任务模式 2 维护模式
	bool      m_bPlcConnectState;	  //PLC连接状态
	bool      m_bSuddenStop;          //急停状态
	QString   m_sCtrGuid;             //当前获取控制权限的GUID    第三方控制的GUID随机生成  程序本身控制GUID为"1"
	QString   m_sDevStatus;           //设备状态
	QString   m_sDevWorkStatus;       //设备工作状态0空闲、1前进中、2后退中、3充电中、4运动到指定点中、5初始化中、6前进盘库、7后退盘库、8准备充电 11冲洗过程中
	QString   m_sRobBatteryInfo;      //机器人电量信息
	QString   m_sBatteryVol;          //电池电压
	QString   m_sBatteryCurr;         //电池电流
	QString   m_sRobTempInfo;         //机器人温度信息
	QString   m_sRobCurrLoca;         //机器人当前位置单位mm
	QString   m_sRobCurrSpeed;        //机器人当前速度
	QString   m_sRobCurrLocaZ;        //机器人Z当前位置(单位是mm)  
	QString   m_sRobCurrSpeedZ;       //机器人Z当前速度
	QString   m_sTaskErr;             //机器人执行任务异常说明
	QString   m_sMotorCurr;           //电机电流 
	QString   m_sIsInFlushPlace;	  //是否到达冲洗位置
	QString   m_sMotorTorque;         //电机力矩
	QString   m_sMotorTemp;           //电机温度
	QString   m_sMotorErr;            //电机当前报警代码
	QString   m_sSwitchStateCheck;    //检测开关状
	QString   m_sLiftTorque;          //升降机力矩
	QString   m_sLiftTemp;            //升降机温度
	QString   m_sLiftErr;             //升降机电机当前报警代码
	QString   m_sSensorTemp;          //传感器温度
	QString   m_sSensorHum;           //传感器湿度
	QString   m_sSensorPM25;          //传感器PM2.5
	QString   m_sSensorPM10;          //传感器PM10
	QString   m_sSensorGas;           //传感器可燃气体
	QString   m_sSensorCO;            //传感器一氧化碳
	QString   m_sRfidTagNum;          //Rfid标签序号
	QString   m_sRfidTagVal;          //Rfid标签值
	QString   m_sTotalDis;            //运行总里程
	int       m_nTaskStatus;          //机器人当前任务状态 1-开始执行任务  2-暂停执行任务 3-中止执行任务 4-恢复执行任务
	int       m_nPolItemNum;          //当前巡检项序号
	int       m_nPolItemExecStatus;   //当前巡检项执行状态 
	int       m_nLightStatus;         //三色灯状态(0:熄灭 1:黄灯 2:绿灯 3:红灯 4:绿闪)
	int       m_nLabelMode;			  //标签模式(开关)
	int       m_nDirectionSelect;	  //方向选择（调试界面中用到）正/反  0/1
	int       m_nParameterdDistribut; //参数下发（调试界面中用到）不下发/下发  0/1
	int       m_nSave;				  //保存 （调试界面中用到）不保存/保存  0/1
	QString   m_dRobRunSpeedSet;      //设定速度
	CDevDataCam*   m_pDevDataCam;     //云台设备数据类
	QMap<QString, QString>m_mapLogId;
	signals:
		void sigAddDevExecLog(SDevExecLog sSDevExecLog);
};

#endif